// axios的配置
import axios from "axios"

import{ MessageBox,Message, Loading} from 'element-ui';
// axios的公共配置
// 引入storage方法
import storage from "@/utils/storage"
// 引入进度条
import nprogress from "nprogress"
import 'nprogress/nprogress.css'

let http = axios.create({
    withCredentials: true,//是否携带凭证
    baseURL: "/api",//基础地址
    timeout: 5000,//超时设置
})
// 请求拦截
let fullScreenLoading = null;
http.interceptors.request.use(config => {
    nprogress.start()
     // confing就是请求的对象，可以拿到请求的地址参数等
        // return config就是放行
        let token=storage.get('qf-token')
       config.headers['authorization']=token

    //    登入的时候打开加载动画
        // console.log(config)

        if(config.url.indexOf('login')!==-1||config.url.indexOf('wechatLogin')!==-1){
            fullScreenLoading=Loading.service({
                lock: true,
                text: 'Loading',
                spinner: 'el-icon-loading',
                background: 'rgba(0, 0, 0, 0.7)'
            })
        }
        return config
})

// 响应拦截
http.interceptors.response.use(config => {
    nprogress.done()
    if(fullScreenLoading){
        fullScreenLoading.close()
        fullScreenLoading = null
    }
    let { state, msg } = config.data;
    // console.log(config.url)
    if (!state&&config.config.url!=="/order/query_order_status") {
        // 后台响应了错误的结果
        MessageBox({
            message:msg,
            title:'提示',
            type:'error'
        })
    }
    let {code}=config.data;
    if(code==='10022'||code==='1004'){
        Message.error('登入过期，请重新登录')
        storage.rm('qf-token')
        location.reload()
    }
    return config
})
export default http;